home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / General Utilities / ReNamer 5.40 / ReNamer.exe / {app} / Scripts / Hours span.pas < prev    next >
Pascal/Delphi Source File  |  2007-01-14  |  2KB  |  49 lines

  1. // This script reads dates from filenames in format: yyyy-mm-dd hh-nn-ss.JPG
  2. // then adds/subtracts N hours from the date and prints the new date in the
  3. // format defined by DateOutputFormat variable. HoursSpan variable defines
  4. // how many hours should be added/subtracted (use minus for subtraction).
  5.  
  6. const
  7.   HoursSpan = -3;   // amount of hours to add or subtract!!
  8.   DateOutputFormat = 'yyyy-mm-dd hh.nn.ss';  // output date format!!
  9.   HoursPerDay = 24;  // do not change this!!
  10.  
  11. var
  12.   iYear, iMonth, iDay, iHour, iMin, iSec: Integer;
  13.   Date, Time, DateTime: TDateTime;
  14.  
  15. procedure AddHours(var ADateTime: TDateTime; const ANumberOfHours: Integer);
  16. begin
  17.   ADateTime := ((ADateTime * HoursPerDay) + ANumberOfHours) / HoursPerDay;
  18. end;
  19.  
  20. begin
  21.   // extract date-time variables as integers
  22.   iYear  := StrToIntDef(Copy(FileName, 1, 4), -1);
  23.   iMonth := StrToIntDef(Copy(FileName, 6, 2), -1);
  24.   iDay   := StrToIntDef(Copy(FileName, 9, 2), -1);
  25.   iHour  := StrToIntDef(Copy(FileName, 12, 2), -1);
  26.   iMin   := StrToIntDef(Copy(FileName, 15, 2), -1);
  27.   iSec   := StrToIntDef(Copy(FileName, 18, 2), -1);
  28.  
  29.   // process only if all variables are correctly converted
  30.   if (iYear >= 0) and (iMonth >= 0) and (iDay >= 0) and
  31.      (iHour >= 0) and (iMin >= 0) and (iSec >= 0) then
  32.  
  33.   begin
  34.     // create a new date-time variable
  35.     Date := EncodeDate(iYear, iMonth, iDay);
  36.     Time := EncodeTime(iHour, iMin, iSec, 0);
  37.     DateTime := Date + Time;
  38.  
  39.     // add hours (use minus for subtracting)
  40.     AddHours(DateTime, HoursSpan);
  41.  
  42.     // concatenate the rest of the filename and the new date
  43.     FileName := Copy(FileName, 20, Length(FileName));
  44.     FileName := FormatDateTime(DateOutputFormat, DateTime) + FileName;
  45.   end
  46.  
  47.   // something went wrong
  48.   else FileName := 'INVALID INPUT';
  49. end.